/**
 * Notes: 门店设备实体 - 宠物门店预约小程序
 * Date: 2025-01-27 
 */

const BaseModel = require('./base_model.js');
class DeviceModel extends BaseModel {}

// 集合名
DeviceModel.CL = "ax_devices";

DeviceModel.DB_STRUCTURE = {
	_pid: 'string|true',
	_id: 'string|true|comment=设备唯一ID',
	storeId: 'string|true|comment=所属门店ID',
	
	name: 'string|true|comment=设备名称',
	status: 'int|true|default=1|comment=状态 2:使用中, 1:可用, 0:维修中',
	
	// 设备状态管理相关字段
	remainingTime: 'int|false|default=0|comment=剩余使用时间(秒)',
	currentOrderId: 'string|false|comment=当前关联的订单ID',
	lastUpdateTime: 'int|false|comment=最后状态更新时间',
	endTime: 'int|false|default=0|comment=设备使用结束时间',
	
	// 设备基本信息
	type: 'string|false|comment=设备类型',
	code: 'string|false|comment=设备编码',
	iotId: 'string|false|comment=物联网设备ID',
	category: 'string|false|comment=设备分类',
	location: 'string|false|comment=设备位置',
	price: 'int|false|default=0|comment=设备使用价格',

	// MQTT/连接信息（来自设备库）
	appId: 'string|false|comment=应用ID',
	deviceKey: 'string|false|comment=设备密钥',
	deviceMAC: 'string|false|comment=设备MAC地址',
	clientId: 'string|false|comment=MQTT客户端ID',
	host: 'string|false|comment=MQTT服务器地址',
	port: 'int|false|default=1883|comment=MQTT端口',
	username: 'string|false|comment=MQTT用户名',
	password: 'string|false|comment=MQTT密码',
	publishTopic: 'string|false|comment=设备上报/订阅主题（可能以/subscribe或/publish结尾）',
	subscribeTopics: 'string|false|comment=设备订阅主题列表（可能为JSON数组字符串或单个字符串）',
	
	// 设备状态信息
	isOnline: 'bool|false|default=false|comment=设备是否在线',
	switchStatus: 'bool|false|default=false|comment=设备开关状态',
	currentTemperature: 'float|false|default=0|comment=当前温度',
	waterLevel: 'float|false|default=0|comment=水位',
	
	createTime: 'int|true|comment=创建时间',
	updateTime: 'int|true|comment=更新时间',
	EDIT_TIME: 'int|false|comment=框架自动更新时间',
	EDIT_IP: 'string|false|comment=框架自动更新IP',
}

// 字段前缀
DeviceModel.FIELD_PREFIX = "";

// 禁用自动添加ID字段，使用_id作为主键
DeviceModel.ADD_ID = false;
// 禁用自动添加时间和IP字段
DeviceModel.UPDATE_TIME = false;
DeviceModel.UPDATE_IP = false;

/**
 * 设备状态
 */
DeviceModel.STATUS = {
	MAINTENANCE: 0,  // 维修中
	AVAILABLE: 1,    // 可用
	IN_USE: 2        // 使用中
};

DeviceModel.STATUS_DESC = {
	MAINTENANCE: '维修中',
	AVAILABLE: '可用',
	IN_USE: '使用中'
};

module.exports = DeviceModel;
